#ifndef INTERFACEMSG_H
#define INTERFACEMSG_H

#define MSG_TIS 1


typedef struct
{
    int msgType;
    int bodyLen;
}BaseTIS;

/*
   __attribute__ ((packed))的作用就是告诉编译器取消结构在编译过程中的优化对齐,
   按照实际占用字节数进行对齐，是GCC特有的语法。这个功能是跟操作系统没关系，跟编译器有关

   内存对齐，往往是由编译器来做的，如果你使用的是gcc，可以在定义变量时，添加__attribute__，来决定是否使用内存对齐，或是内存对齐到几个字节，以上面的结构体为例：
   1)到4字节，同样可指定对齐到8字节。
struct student
{
    charname[7];
    uint32_tid;
    charsubject[5];
} __attribute__((aligned(4)));

    2)不对齐，结构体的长度，就是各个变量长度的和
struct student
{
    charname[7];
    uint32_tid;
    charsubject[5];
} __attribute__ ((packed));
*/

typedef struct __IMsg
{
    BaseTIS base;
    unsigned char body[];
}__attribute ((packed)) IMsg;



//////////////////////////////////////////////////
typedef struct
{
    unsigned char status;           //这个状态码应该是对TIS协议里面的位做过分析的，而不是协议的原始码
    unsigned char routeID;
    unsigned char stationID;
    unsigned char destID;
    unsigned char platSide;         //如果是platform side信号时，必须记录当前车门要开的方向，B／Right side(1)，A／Left side(2), both(3);
}tisToPisPkg;

typedef struct
{
    unsigned char status;           //这个状态码应该是对TIS协议里面的位做过分析的，而不是协议的原始码
    unsigned char routeID;
    unsigned char stationID;
    unsigned char destID;
    unsigned char platSide;         //如果是platform side信号时，必须记录当前车门要开的方向，B／Right side(1)，A／Left side(2), both(3);
}pisToTisPkg;
//////////////////////////////////////////////////

//struct pppoe_tag {
//	__be16 tag_type;
//	__be16 tag_len;
//	char tag_data[0];
//} __attribute ((packed));

#endif // INTERFACEMSG_H
